<?php
namespace Home\Controller;

use Think\Controller;

class CommonController extends Controller
{
    // 用户
    private $user = null;

    // 不需要登录验证的url，不能使用大写，不然有bug
    protected $without = [
        // '/login/index',
        // '/login/login',
        // '/login/logout',
        // '/image/index',
        // '/image/upload',
        // // 用户登录
        // '/user/login',
        // // 支付回调
        // '/callback/red',
        // // 定时任务
        // '/crontab/redReback', // 过期红包返还
    ];

    public function __construct()
    {
        parent::__construct();

        // pv记录
        $this->pv();

        // if ($this->_loginHandle()) {
        //     // key 检查
        //     $this->_checkKey();
        // }
    }

    /**
     * 检查是否登录过期，因为都是基于接口开发，所以检查key
     * @return [type] [description]
     */
    private function _checkKey()
    {
        if (C('DEV')) {

            $user_id = 9;

        } else {

            $user_id = session('user_id');

            if (!$user_id) {
                session('refer', get_current_url());
                redirect_wx_oauth(U('user/login@sfmhb.shanfengmao.com'));
            }
        }

        $user = M('user')->field('*')->find($user_id);

        if (!$user) {

            session('refer', get_current_url());
            redirect_wx_oauth(U('user/login@sfmhb.shanfengmao.com'));
        }

        // 定义全局使用变量
        define('USER_ID', $user_id);
        $this->user = $user;
    }

    /**
     * pv 记录
     * @return [type] [description]
     */
    private function pv()
    {
        if (C('PV')) {
            $pv_log = [
                'domain'      => get_domain(),
                'ip'          => get_client_ip(),
                'agent'       => get_client_agent(),
                'request_uri' => $_SERVER['REQUEST_URI'],
                'method'      => REQUEST_METHOD,
                'param'       => json_encode(I('param.')),
                'session'     => json_encode(session()),
                'cookie'      => json_encode(cookie()),
                'add_time'    => CUR_DATETIME,
            ];
            M('pv_log')->add($pv_log);
        }
    }

    /**
     * 登录控制，处理不需要登录的控制器
     * @return [type] [description]
     */
    private function _loginHandle()
    {
        return $is_check = !in_array(strtolower("/" . CONTROLLER_NAME . "/" . ACTION_NAME), $this->without);
    }
}
